#include <stdio.h>
#include <stdlib.h>
#include <string.h>

enum E {
    // 枚举元素表中的元素只能是符号，其值只能是整数
    // "hello", // 错误
    a,
    b = 5,
    c,
    d = 4,
    e
} E1;

typedef int A[5]; // 实际上是：typedef int[5] A; 但C语言不能这么写
// typedef只能声明类型名，不能声明变量
// typedef可以嵌套
// 与#define的作用不同，不是做简单的字符串替换

void func() {
    E1 = e;
    printf("E1 = %d\n", E1); // d=5，所以e以此类推值为5，枚举常量可以重复，b，e都代表5

    printf("E1 = %d\n", E1 = a); // a是第一个枚举元素（枚举常量）且没有进行初始化，所以a=0
    printf("E1 = %d\n", E1 = b);
    printf("E1 = %d\n", E1 = c); // b=5, 所以c以此类推值为6
    printf("E1 = %d\n", E1 = d);

    A a1;
    for (int i = 0; i < 5; ++i){
        a1[i] = 2 * i;
    }
    for (int i = 0; i < 5; ++i){
        printf("%d ", a1[i]);
    }
    printf("\n");
}

int main() {
    func();
    return 0;
}